package net.linku.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.linku.domain.LARole;
import net.linku.model.req.login.UserRequestParams;
import net.linku.model.req.privilege.AdminStatusChangeReq;
import net.linku.model.req.role.AdminRoleReq;
import net.linku.model.req.role.AdminRoleReqQuery;
import net.linku.model.resp.login.LARoleVO;

import java.util.List;

public interface LARoleService {

    /**
     * 判断一个用户是否是超级管理员
     *
     * @param userRequestParams 用户的id
     * @return 是否是超级管理员
     */
    Boolean isSuperAdmin(UserRequestParams userRequestParams);

    /**
     * 根据用户名称获取角色数据
     *
     * @param userRequestParams 用户请求参数，包含租户ID和用户ID。
     * @return 符合条件的 LARole 列表。
     */
    List<LARole> getRolesByAccountId(UserRequestParams userRequestParams);

    /**
     * 分页查询角色数据
     *
     * @param query 查询参数，包含分页信息和查询条件。
     * @return 符合条件的角色分页数据。
     */
    Page<LARoleVO> pageRoles(AdminRoleReqQuery query);

    /**
     * 添加角色
     *
     * @param roleReq 角色请求对象
     * @return 添加是否成功
     */
    Boolean addRole(AdminRoleReq roleReq);

    /**
     * 更新角色
     *
     * @param roleReq 角色请求对象
     * @return 更新是否成功
     */
    Boolean updateRole(AdminRoleReq roleReq);

    /**
     * 删除角色
     *
     * @param statusChangeReq 角色状态变更请求对象
     * @return 删除是否成功
     */
    Boolean deleteRole(AdminStatusChangeReq statusChangeReq);
}
